import {BaseObject} from "./baseObject.js";

/**
 * @description 商品类
 * @extends {BaseObject}
 * @class {ProductDataModel}
 * @author hhx
 * @date 2024-11-21 16:11
 * @version 0.1.2
 */
export class ProductDataModel extends BaseObject {

    /**
     * @description 商品模型构造函数
     * @public
     * @constructor
     * @param prop {object} 模型参数
     */
    constructor(prop) {
        super(prop)
    }

    //========================== 内部属性 ==========================

    /**
     * @description 获取 商品id
     * @property
     * @protected
     * @return {number} 商品id
     */
    get productId() {
        return this.property.get('productId');
    }

    /**
     * @description 设置 商品id
     * @property
     * @protected
     * @param value {number} id
     */
    set productId(value) {
        this.property.set('productId', value);
    }

    /**
     * @description 获取 商品名称
     * @property
     * @protected
     * @return {string} 商品名称
     */
    get productName() {
        return this.property.get('productName');
    }

    /**
     * @description 设置 商品名称
     * @property
     * @protected
     * @param value {*} 商品名称
     */
    set productName(value) {
        this.property.set('productName', value);
    }

    /**
     * @description 获取 商品价格
     * @property
     * @protected
     * @return {number} 商品价格
     */
    get price() {
        return this.property.get('price');
    }

    /**
     * @description 设置 商品价格
     * @property
     * @protected
     * @param value {number}
     */
    set price(value) {
        this.property.set('price', value);
    }

    /**
     * @description 获取 商品描述
     * @property
     * @protected
     * @return {string} 商品描述
     */
    get description() {
        return this.property.get('description');
    }

    /**
     * @description 设置 商品描述
     * @property
     * @protected
     * @param value {string}
     */
    set description(value) {
        this.property.set('description', value);
    }

    /**
     * @description 获取 商品库存
     * @property
     * @protected
     * @return {number} 商品库存
     */
    get stock() {
        return this.property.get('stock');
    }

    /**
     * @description 设置 商品库存
     * @property
     * @protected
     * @param value {number} 商品库存
     */
    set stock(value) {
        this.property.set('stock', value);
    }

    //========================== 属性方法 ==========================

    getProductId() {
        return this.productId;
    }

}